﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;

namespace cognysClient.Admin
{
    public static class Validation
    {
        public static bool OnlyLetters(this TextBox input)
        {
            return Regex.IsMatch(input.Text, @"^[a-zåäöA-ZÅÄÖ]+$");
        }

        public static bool ValidateSwedishPersonNumber(this TextBox input)
        {
            // Removes possible hyphens and reduces the number of digits to 10
            var pnr = RemoveInvalidChars(input.Text).ToString();

            // Siffrorna i personnumret multipliceras växelvis med 2 och 1.
            int summary = 0;
            for (int i = 0; i < pnr.Length; i++)
            {
                int number = int.Parse(pnr[i].ToString());
                int partialsummary = 0;

                if (i % 2 == 0)
                {
                    partialsummary = number * 2;

                    if (partialsummary > 9)
                        partialsummary -= 9;
                }
                else
                    partialsummary = number;

                summary += partialsummary;
            }

            /* Är summan jämt delbar med 10, då är det ett valid svenskt
             *  personnummer. */
            return (summary % 10 == 0);
        }

        private static string RemoveInvalidChars(string pnr)
        {
            /*  Vi förutsätter att strängen inte innehåller annat än siffror, 
             * bindestreck och kanske inledande/avslutande tomrum i värsta 
             * fall */
            pnr = pnr.Trim();

            // tabort bindestreck.
            if (pnr.Contains('-'))
                pnr = pnr.Replace("-", "");

            // endast 10 siffror vill vi ha.
            if (pnr.Length > 10)
                return pnr.Substring(2, 10);

            return pnr;
        }
    }
}